package com.yzt.zhuju.IService.message;

import com.alibaba.android.arouter.facade.template.IProvider;
import com.yzt.zhuju.network.entity.chatroom.ChatRoomChatMessage;

/**
 * @author matthewzhao
 *         created on: 2022/7/26 14:05
 *         description: 聊天室消息相关service
 */
public interface IChatRoomMessageService extends IProvider {

    /**
     * 加入IM聊天室
     * @param chatRoomId 聊天室id
     * @param defMessageCount 拉取聊天消息记录数，-1：不拉取历史小时；0：表示使用默认设置10 （最大值为50）
     * @param callback
     */
    void joinChatRoom(String chatRoomId, int defMessageCount, JoinChatRoomCallback callback);

    /**
     * 退出IM聊天室
     * @param chatRoomId 聊天室id
     * @param callback
     */
    void quitChatRoom(String chatRoomId, MessageCallback callback);

    /**
     * 获取聊天室历史消息, 获取的消息列表会从消息中心分发
     * @param chatRoomId 聊天室id
     * @param count 拉取的消息数
     * @param callback
     */
    void getChatRoomHistoryMessages(String chatRoomId, int count, MessageCallback callback);

    /**
     * 发送聊天室文字消息
     * @param chatRoomId 聊天室id
     * @param messageContent 消息文本
     * @param chatMessageInfo
     * @param callback
     */
    void sendChatRoomTextMessage(String chatRoomId, String messageContent, ChatRoomChatMessage chatMessageInfo, MessageCallback callback);

    /**
     * 发送聊天室图片消息
     * @param chatRoomId 聊天室id
     * @param imagePath 图片路径
     * @param callback
     */
    void sendChatRoomImageMessage(String chatRoomId, String imagePath, ChatRoomChatMessage chatMessageInfo, MessageCallback callback);

    interface JoinChatRoomCallback {

        void onSuccess();

        void onBeKicked();

        void onError(int code, String msg);
    }
}
